from HTTP.Download1024 import getDirectory, getPhotos, getWord
import os
from requests.exceptions import *


def Help():
    print('*' * 51)
    print('* 1.批量模式:输入Directory URL和“选择图片或者文字”')
    print('*    批量下载目录下的所有内容')
    print('* 2.单独模式，“选择图片或者文字”后，输入资源URL，')
    print('*   下载单一图集或小说')
    print('* 3.Help, 帮助信息')
    print('*' * 51)
    input('按“回车键”返回主菜单...')
    main()


def Menu():
    print('*' * 51)
    print('**', ' ' * 22, ' ' * 22, '**', )
    print('** ', ' ' * 4, '此脚本下载"Download1024.com"下的图片或文字', ' ' * 4, '**')
    print('**', ' ' * 44, ' **')
    print('*' * 51)
    print('******', ' ' * 12, '选择模式：', ' ' * 13, '******')
    print('**', ' ' * 3, '1:批量模式     2:单独模式     3：help', ' ' * 3, '**')
    print('*' * 51)


def Photo_OR_Text(list_url):
    while True:
        print('*' * 51)
        print('**      下载图片请按:"1"    下载文字请按:"2"      **')
        print('*' * 51)
        try:
            mode = int(input("下载图片 || 文字："))
        except ValueError:
            print('再选一次：')
        except UnboundLocalError:
            print('再选一次：')
        n = 1
        if mode == 1:
            for dir in list_url:
                print(f'正在下载第{n}个图集：', end='\t')
                getPhotos.main(dir)
                n += 1
            return 'OK'
        elif mode == 2:
            for dir in list_url:
                print(f'正在下载第{n}个小说。')
                getWord.main(dir)
                n += 1
        else:
            os.system('cls')
            print('输入错误，重新输入：')


def DirMode():
    """

    :return:
    """
    global ListUrl
    n = 3
    while n:
        n -= 1
        try:
            url = input('DirURL：')
            print('*'*51)
            ListUrl = getDirectory.main(url)
            print(f"解析URL成功，共有{len(ListUrl)}个项。")
            Photo_OR_Text(ListUrl)
            break
        except MissingSchema:
            print(f'URL:"{url}"无效，请重新输入.', end=' ')
        except TimeoutError:
            print(f'连接超时')
        except UnboundLocalError:
            print('请输入一个1024的URL。', end='')
        #except:
        #    print('Error, Please again.')
    if n == 0:
        return "Error"


def single():
    print('*' * 51)
    print('**      下载图片请按:"1"    下载文字请按:"2"     **')
    print('*' * 51)
    while True:
        try:
            choose = int(input("下载图片 || 文字："))
            break
        except:
            print('输入错误，从新输入：')

    try:
        if choose == 1:
            getPhotos.main(input('Photos URL:'))
        elif choose == 2:
            getWord.main(input('Text URL:'))
    except MissingSchema:
        print('URL 不正确。。')
        return 'Error'


def main():
    while True:
        Menu()
        mode = int(input('选择模式:'))
        if mode == 1:
            if DirMode() is 'Error':
                print('错的次数太多，我不干了。')
                print('*'*51)
                print('*'*19, '按回车键结束', '*'*18)
                print('*' * 51)
                input()
            return 'Error'
        elif mode == 2:
            while True:
                if single() is 'Error':
                    pass
                else:
                    if input('是否继续下载？Y/N').upper() is 'N':
                        return 'ok'
        elif mode == 3:
            Help()
        else:
            os.system('cls')
            print('输入错误。从新输入...')


if __name__ == '__main__':
    os.system('mode 55,50')
    os.system('cls')
    print('*'*51)
    print('-'*51)
    print('** 文件下载到当前工作目录')
    print(f'** 当前工作目录为：{os.getcwd()}')
    print('-' * 51)
    print('*'*51)
    main()
    # photo(url)
